From ab55357dfe5bd0edac0b9556a83e69814df791b1 Mon Sep 17 00:00:00 2001 From: Daniel Golle Date: Thu, 6 Aug 2020 15:34:27 +0100 Subject: [PATCH] jail: fix freeing cgroups avl Signed-off-by: Daniel Golle --- jail/cgroups.c | 1 + jail/jail.c | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/jail/cgroups.c b/jail/cgroups.c index 2317472..97583b3 100644 --- a/jail/cgroups.c +++ b/jail/cgroups.c @@ -81,6 +81,7 @@ static void cgroups_set(const char *key, const char *val) void cgroups_free(void) { struct cgval *valp, *tmp; + avl_for_each_element_safe(&cgvals, valp, avl, tmp) { avl_delete(&cgvals, &valp->avl); free((void *)(valp->avl.key)); diff --git a/jail/jail.c b/jail/jail.c index 42b2d3f..0a2f978 100644 --- a/jail/jail.c +++ b/jail/jail.c @@ -243,7 +243,7 @@ static void free_opts(bool parent) { char **tmp; /* we need to keep argv, envp and seccomp filter in child */ - if (parent) { + if (parent) { /* parent-only */ if (opts.ociseccomp) { free(opts.ociseccomp->filter); free(opts.ociseccomp); @@ -260,9 +260,10 @@ static void free_opts(bool parent) { free(*(tmp++)); free(opts.envp); + } else { /* child-only */ if (opts.ocibundle) cgroups_free(); - }; + } free_rlimits(); free_sysctl(); @@ -273,6 +274,7 @@ static void free_opts(bool parent) { free(opts.uidmap); free(opts.gidmap); free(opts.annotations); + free(opts.ocibundle); free_hooklist(opts.hooks.createRuntime); free_hooklist(opts.hooks.createContainer); free_hooklist(opts.hooks.startContainer); -- 2.30.2